
* Joachim Wehner and Linnea Mills
* Cabinet Size and Governance in Sub-Saharan Africa
* Accepted for publication in Governance
* Last update: January 7, 2021



****************************************
*** Table 1: Main regression results ***
****************************************

tsset ifs2 year
set more off

sum gee rqe rle cce execorr_reversed pubcorr_reversed cpi iiag_comp4
replace gee = (gee*20) + 50
replace rqe = (rqe*20) + 50
replace rle = (rle*20) + 50
replace cce = (cce*20) + 50
replace execorr_reversed = (execorr_reversed*100)
replace pubcorr_reversed = (pubcorr_reversed*100)
replace cpi = (cpi*10)
sum gee rqe rle cce execorr_reversed pubcorr_reversed cpi iiag_comp4

set more off

xtreg gee ministers polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg rqe ministers polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg rle ministers polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg cce ministers polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg cpi ministers polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg execorr_reversed ministers v2x_polyarchy left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg iiag_comp4 ministers polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)



*************************************************************************
*** Table 2: Supplementary regressions with lagged dependent variable ***
*************************************************************************

set more off

xtreg gee l.gee ministers polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg rqe l.rqe ministers polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg rle l.rle ministers polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg cce l.cce ministers polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg cpi l.cpi ministers polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg execorr_reversed l.execorr_reversed ministers v2x_polyarchy left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)



*******************************************
*** Robustness check - lagged ministers ***
*******************************************

set more off

xtreg gee l.ministers polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg rqe l.ministers polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg rle l.ministers polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg cce l.ministers polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg cpi l.ministers polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg execorr_reversed l.ministers v2x_polyarchy left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg iiag_comp4 l.ministers polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)



**************************************************************************
*** Robustness check - interaction with parliamentary system indicator ***
**************************************************************************

gen parliamentary = 0
replace parliamentary = 1 if country == "Botswana"
replace parliamentary = 1 if country == "Ethiopia"
replace parliamentary = 1 if country == "Lesotho"
replace parliamentary = 1 if country == "Mauritius"
replace parliamentary = 1 if country == "South Africa"
label var parliamentary "Parliamentary system"


set more off

xtreg gee c.ministers##i.parliamentary polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg rqe c.ministers##i.parliamentary polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg rle c.ministers##i.parliamentary polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg cce c.ministers##i.parliamentary polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg cpi c.ministers##i.parliamentary polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg execorr_reversed c.ministers##i.parliamentary v2x_polyarchy left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg iiag_comp4 c.ministers##i.parliamentary polity2 left govfrac shareprogrammatic lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)



****************************************************************
*** Robustness check - interaction with programmatic parties ***
****************************************************************

set more off

xtreg gee c.ministers##c.shareprogrammatic polity2 left govfrac lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg rqe c.ministers##c.shareprogrammatic polity2 left govfrac lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg rle c.ministers##c.shareprogrammatic polity2 left govfrac lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg cce c.ministers##c.shareprogrammatic polity2 left govfrac lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg cpi c.ministers##c.shareprogrammatic polity2 left govfrac lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg execorr_reversed c.ministers##c.shareprogrammatic v2x_polyarchy left govfrac lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)
xtreg iiag_comp4 c.ministers##c.shareprogrammatic polity2 left govfrac lngdppc military defmin yrsoffc yrcurnt y1-y44, fe cluster(ifs2)



****************************************************************************
*** Figure 1: Variation in cabinet size in Sub-Saharan Africa, 1971-2014 ***
****************************************************************************

cd "/Users/WEHNER/Documents/achim/current projects/world bank/"
sum ministers, detail
* Median cabinet size is 22

graph hbox ministers, over(country, sort(1) label(labsize(vsmall))) /*
*/ ytitle("Number of Cabinet Ministers (1971-2014)", size(vsmall)) xsize(2) ysize(3) ylabel(0 10 20 30 40 50 60, nogrid labsize(vsmall)) /*
*/ marker(1, msize(vsmall)) yline(22, lwidth(medium) lcolor(gs10) lpattern(dash)) graphregion(color(white)) /*
*/ plotregion(color(white) lwidth(medium) lcolor(black)) name(ministers, replace)



****************************************************************
*** Figure 2: Evolution of cabinet size over time, 1971-2014 ***
****************************************************************

egen ministers_mean = mean(ministers), by(year)
replace ministers_mean = . if year == 1976
set scheme sj
twoway (scatter ministers year, msymbol(p) jitter(2)) (line ministers_mean year, connect(1) sort lpattern(solid) lcolor(edkblue) lwidth(vwide)), /*
*/ xtitle("Year", size(small)) ytitle("Number of Cabinet Ministers", size(small)) /*
*/ xlabel( 1970 1980 1990 2000 2010 , labsize(small)) ylabel(0 10 20 30 40 50 , nogrid labsize(small)) /*
*/ legend(off) graphregion(color(white))



******************************************************************************************************
*** Figure 3: Cabinet size has a negative correlation with governance indicators, 2005-14 averages ***
******************************************************************************************************

bysort country: egen ministers_avg = mean(ministers) if year >= 2005

bysort country: egen vae_avg = mean(vae) if year >= 2005
bysort country: egen pve_avg = mean(pve) if year >= 2005
bysort country: egen gee_avg = mean(gee) if year >= 2005
bysort country: egen rqe_avg = mean(rqe) if year >= 2005
bysort country: egen rle_avg = mean(rle) if year >= 2005
bysort country: egen cce_avg = mean(cce) if year >= 2005
bysort country: egen execorr_reversed_avg = mean(execorr_reversed) if year >= 2005
bysort country: egen pubcorr_reversed_avg = mean(pubcorr_reversed) if year >= 2005
bysort country: egen cg_avg = mean(cg) if year >= 2005
bysort country: egen cpi_avg = mean(cpi) if year >= 2005
bysort country: egen iiag_comp3_avg = mean(iiag_comp3) if year >= 2005
bysort country: egen iiag_comp4_avg = mean(iiag_comp4) if year >= 2005

graph twoway (scatter gee_avg ministers_avg, mlabel(ifs2) mlabcolor(gs5) mlabposition(12) mcolor(gs10) msize(vsmall)) (lfit gee_avg ministers_avg, lcolor(cranberry)), /*
*/ xtitle("Number of Cabinet Ministers", color(white)) ytitle("(a) WGI Government Effectiveness") legend(off) /*
*/ graphregion(color(white)) plotregion(color(white) lwidth(medium) lcolor(black)) title(" ", color(white)) name(gee_avg, replace)

graph twoway (scatter rqe_avg ministers_avg, mlabel(ifs2) mlabcolor(gs5) mlabposition(12) mcolor(gs10) msize(vsmall)) (lfit rqe_avg ministers_avg, lcolor(cranberry)), /*
*/ xtitle("Number of Cabinet Ministers", color(white)) ytitle("(b) WGI Regulatory Quality") legend(off) /*
*/ graphregion(color(white)) plotregion(color(white) lwidth(medium) lcolor(black)) title(" ", color(white)) name(rqe_avg, replace)

graph twoway (scatter rle_avg ministers_avg, mlabel(ifs2) mlabcolor(gs5) mlabposition(12) mcolor(gs10) msize(vsmall)) (lfit rle_avg ministers_avg, lcolor(cranberry)), /*
*/ xtitle("Number of Cabinet Ministers", color(white)) ytitle("(c) WGI Rule of Law") legend(off) /*
*/ graphregion(color(white)) plotregion(color(white) lwidth(medium) lcolor(black)) title(" ", color(white)) name(rle_avg, replace)

graph twoway (scatter cce_avg ministers_avg, mlabel(ifs2) mlabcolor(gs5) mlabposition(12) mcolor(gs10) msize(vsmall)) (lfit cce_avg ministers_avg, lcolor(cranberry)), /*
*/ xtitle("Number of Cabinet Ministers") ytitle("(d) WGI Control of Corruption") legend(off) /*
*/ graphregion(color(white)) plotregion(color(white) lwidth(medium) lcolor(black)) title(" ", color(white)) name(cce_avg, replace)

graph twoway (scatter cpi_avg ministers_avg, mlabel(ifs2) mlabcolor(gs5) mlabposition(12) mcolor(gs10) msize(vsmall)) (lfit cpi_avg ministers_avg, lcolor(cranberry)), /*
*/ xtitle("Number of Cabinet Ministers") ytitle("(e) TI Corruption Perceptions Index") legend(off) /*
*/ graphregion(color(white)) plotregion(color(white) lwidth(medium) lcolor(black)) title(" ", color(white)) name(cpi_avg, replace)

graph twoway (scatter execorr_reversed_avg ministers_avg, mlabel(ifs2) mlabcolor(gs5) mlabposition(12) mcolor(gs10) msize(vsmall)) (lfit execorr_reversed_avg ministers_avg, lcolor(cranberry)), /*
*/ xtitle("Number of Cabinet Ministers") ytitle("(f) V-Dem Executive Corruption Index") legend(off) /*
*/ graphregion(color(white)) plotregion(color(white) lwidth(medium) lcolor(black)) title(" ", color(white)) name(execorr_avg, replace)

graph twoway (scatter iiag_comp4_avg ministers_avg, mlabel(ifs2) mlabcolor(gs5) mlabposition(12) mcolor(gs10) msize(vsmall)) (lfit iiag_comp4_avg ministers_avg, lcolor(cranberry)), /*
*/ xtitle("Number of Cabinet Ministers") ytitle("(g) IIAG Human Development") legend(off) /*
*/ graphregion(color(white)) plotregion(color(white) lwidth(medium) lcolor(black)) title(" ", color(white)) name(iiag_comp4_avg, replace)

graph combine gee_avg rqe_avg rle_avg cce_avg cpi_avg execorr_avg iiag_comp4_avg, graphregion(color(white) margin(t = 12 b = 12)) col(4) ycommon iscale(.5)



********************************************
*** Appendix Table 1: Summary statistics ***
********************************************

sum ministers cce cpi defmin v2x_polyarchy execorr_reversed lngdppc gee govfrac iiag_comp4 left military /*
*/ polity2 shareprogrammatic rqe rle yrsoffc yrcurnt



******************************************************************
*** Appendix Table 2: Correlations between governance measures ***
******************************************************************

pwcorr gee rqe rle cce cpi execorr_reversed iiag_comp4



**********************************
*** Supplementary correlations ***
**********************************

pwcorr ministers_avg gee_avg rqe_avg rle_avg cce_avg cpi_avg execorr_reversed_avg iiag_comp4_avg, sig

pwcorr ministers_avg gee_avg rqe_avg rle_avg cce_avg cpi_avg execorr_reversed_avg iiag_comp4_avg if country ~= "Comoros", sig


